﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Extensions;
using ConfExpert.Utility;
using DevExpress.Utils;
using ConfExpert.Utility.Grid;
using Tailord.Properties;
using DevExpress.XtraEditors;
using DevExpress.XtraReports.UI;

namespace Tailord
{
    public partial class TopKesim : XForm
    {
        public TopKesim()
        {
            InitializeComponent();
        }

        private void TopKesim_Load(object sender, EventArgs e)
        {
            MainToolbar.Visible = true;

            EnableBarcodeType(0);
            BarcodeRead += TopKesim_BarcodeRead;

            gvKesim.Init("GetTopKesim");
            gvKesim.AddDetailGrid(gvSiparis, 1, "KumasId");
            gvKesim.AddDetailGrid(gvTop, 2, "KumasId");

            gvKesim.MakeColumnInvisible("KumasId","Tedariklines");
            gvSiparis.MakeColumnInvisible("KumasId", "KumasKodu","TedariklinesId");
            gvTop.MakeColumnInvisible("KumasId");           

            gvKesim.AddSummary();
            gvSiparis.AddSummary("SiparisMetraji");
            gvTop.AddSummary("Metraj");

            gvKesim.BestFitColumns();
            gvSiparis.BestFitColumns();
            gvTop.BestFitColumns();

            gvKesim.MakeReadOnly("Barkod");
            gvSiparis.MakeReadOnly();
            gvTop.MakeReadOnly();

            GridManager gm = new GridManager(gvKesim);
            gm.GridMenu.AddMenu("Kumaş Kesim Talebi", PrintKumasKesimTalebi);

            gvKesim.RowCellStyle += gvKesim_RowCellStyle;
            bbiGuncelle.ItemClick += bbiGuncelle_ItemClick;
            
        }

        private void PrintKumasKesimTalebi(object sender, EventArgs e)
        {
            string KumasIds = gvKesim.GetColumnValues("KumasId");
            DataSet ds = AppSession.DataManager.ExecuteDataSet("GetKumasKesimRaporu", KumasIds);

            Reports.KumasKesimTalebi kkt = new Reports.KumasKesimTalebi(ds);
            kkt.ShowPreview();
        }

        void TopKesim_BarcodeRead(int Type, int Barcode)
        {
            string Barkod = Barcode.ToStringNN();
                        
            DataRow drKesim = ((DataRowView)gvKesim.GetFocusedRow()).Row;

            DataTable dtTop = AppSession.DataManager.ExecuteDataTableByQuery("Select * from KumasTop where Metraj > 0.1 and TopNo =" + Barkod);
            if (dtTop.Rows.Count > 0)
            {
                int TopKumasId = dtTop.Rows[0]["KumasId"].ToIntZero();
                int KumasId = drKesim["KumasId"].ToIntZero();
                decimal TopMt = dtTop.Rows[0]["Metraj"].ToDecimalNN();
                decimal Ihtiyac = drKesim["ToplamIhtiyacMt"].ToDecimalNN();

                if (KumasId != TopKumasId)
                {
                    XtraMessageBox.Show("Yanlış kumaş okuttunuz ! ");
                    return;
                }
                else
                {
                    if (Ihtiyac > TopMt)
                        if (XtraMessageBox.Show("Topun metrajı ihtiyacı karşılamıyor. Yine de devam etmek istiyor musunuz ?", "Critical", MessageBoxButtons.YesNo) == DialogResult.No)
                            return;

                    TopBol tb = new TopBol(drKesim, Barkod, TopMt);
                    if (tb.ShowDialog() == DialogResult.OK)
                    {
                        gvKesim.VeriyiGuncelle("GetTopKesim");
                    }
                }
            }
            else
            {
                XtraMessageBox.Show("Kumaş topu bulunamadı");
                return;
            }
        }
        
        

        void gvKesim_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventArgs e)
        {
            if (e.RowHandle > -1)
            {
                if (e.Column.FieldName=="ToplamIhtiyacMt")
                {
                    e.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold);
                    e.Appearance.ForeColor = Color.Red;
                }
                else if (e.Column.FieldName == "ToplamStokMt")
                {
                    e.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold);
                }

                if (e.RowHandle==gvKesim.FocusedRowHandle)
                {
                    e.Appearance.BackColor = Color.Aqua;
                }
            }
        }

        private void bbiGuncelle_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gvKesim.VeriyiGuncelle("GetTopKesim");
        }

    }
}
